﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
public class Producto : Conexion
{
    private int idProducto;
    private int idMarca;
    private int idTipoProducto;
    private int idIva;
    private String descripcion;
    private int codigo;
    private String precioCompra;
    private String precioVenta;
    private String estado;

    public Producto()
    {

    }
    /**
    * Inserta un nuevo registro en la base de datos   
    */
    public void Guardar()
    {
        AbrirConexion();
        IniciarTransaccion();
        SentenciaSQL = "insert into producto("
            + "id_producto,id_marca,id_tipo_producto,descripcion,codigo,precio_compra,precio_venta,id_iva,estado)"
            + "values("
            + "nextval('sq_producto'),"+ IdMarca + ","+ IdTipoProducto + ",'"+Descripcion+"',"+ Codigo + ","+ PrecioCompra + "," + PrecioVenta + ","+ IdIva+ ",'"+Estado+"')";
        try
        {
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (ConexionException ex)
        {
            CancelarTransaccion();
            throw new ConexionException("ocurrio un error al registar", ex);

        }
        finally
        {
            CerrarConexion();
        }


    }

    /**
     * Actualiza el registro
     */
    public void Actualizar()
    {
        AbrirConexion();
        IniciarTransaccion();
        try
        {
            SentenciaSQL = "update producto set	id_marca = " + IdMarca + ", id_tipo_producto = " + IdTipoProducto + ", id_iva = " + IdIva + ", estado = '" + Estado + "', descripcion = '" + Descripcion + "', codigo = " + Codigo + ", precio_compra = " + PrecioCompra + ", precio_venta = " + PrecioVenta + " where id_producto = " + Id + ";";
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (ConexionException ex)
        {
            CancelarTransaccion();
            throw new ConexionException("ocurrio un error al intentar actualizar el registro", ex);
        }
        finally
        {
            CerrarConexion();
        }

    }

    /*
   * Borra el registro
   * Cambia el estado a 'b' -> borrado
   */
    public void Borrar()
    {
        SentenciaSQL = "update producto set estado = 'b' where id_producto = " + Id + " ;";

        AbrirConexion();
        IniciarTransaccion();
        try
        {
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (Exception ex)
        {
            CancelarTransaccion();
            throw new ConexionException("ocurrio un error al tratar de eliminar el registro", ex);
        }
        finally
        {
            CerrarConexion();
        }
    }

   /**
   * Busca los registros que coinciden con los parametros de busqueda
   * @param marca la marca a buscar
   * @returm dataset con el resultado de la busqueda
   */
    public DataSet Buscar(String tipoProducto, String marca, String descripcion)
    {
        DataSet ds = new DataSet();
        SentenciaSQL = "select * from v_producto where estado <> 'b'  and descripcion like '%" + descripcion + "%' and marca like '%" + marca + "%' and tpdescripcion like '%"+tipoProducto+"%' ;";
        AbrirConexion();
        IniciarTransaccion();
        try
        {
            ds = EjecutarComandoDataSet();
            ConfirmarTransaccion();
        }
        catch (Exception ex)
        {
            CancelarTransaccion();
            throw new ConexionException("ocurrio un error al realizar la busqueda", ex);
        }
        finally
        {
            CerrarConexion();
        }

        return ds;

    }

    /**
     * Getters y Setters
     */
    public int Id
    {
        get { return this.idProducto; }
        set { this.idProducto = value; }
    }
    public int IdMarca
    {
        get { return this.idMarca; }
        set { this.idMarca = value; }
    }
    public int IdTipoProducto
    {
        get { return this.idTipoProducto; }
        set { this.idTipoProducto = value; }
    }
    public int IdIva
    {
        get { return this.idIva; }
        set { this.idIva = value; }
    }
    public String Descripcion
    {
        get { return this.descripcion; }
        set { this.descripcion = value; }
    }
    public int Codigo
    {
        get { return this.codigo; }
        set { this.codigo = value; }
    }
    public String PrecioCompra
    {
        get { return this.precioCompra; }
        set { this.precioCompra = value; }
    }
    public String PrecioVenta
    {
        get { return this.precioVenta; }
        set { this.precioVenta = value; }
    }
    public String Estado
    {
        get { return this.estado; }
        set { this.estado = value; }
    }

}
